package jm.nj.demo15mian.demo03;

import jm.nj.demo15mian.demo02.Person;

/*
* 获取class文件对象的三种方式:
* 1.Object类中的方法
*       Class<?> getClass()   返回此 Object 的运行时类。
* 2.类的.Class 类中的方法
*       每个数据类型,基本,引用    java都会赋予一个Class属性
* 3.通过Class类中方法
*       static Class<?> forName(String ClassName)
*       className:要传递类的全类名("cn.itcast.demo02.bean.Person")
* 注意:一个类的Class文件对象只会产生一个
* */
public class Demo01Reflect {
    public static void main(String[] args) throws ClassNotFoundException {
        //1.Object类中的方法
        Person p = new Person();
        Class clazz1 = p.getClass();    //obj中的方法
        System.out.println(clazz1);//obj对象

        Person p1 =  new Person();
        Class clazz4 =  p1.getClass();  //Class大写
        System.out.println(clazz4);

        //2.类的.class属性
        /*int.class;
        double.class;
        String.class;*/
        System.out.println("+++++++++++");
        Class clazz2 = Person.class;//加载类
        System.out.println(clazz2);//无对象//class jm.nj.demo15mian.demo02.Person

        //注意:一个类的Class文件对象只会产生一个
        System.out.println(clazz1 == clazz2);//true
        System.out.println(clazz1.equals(clazz2));

        //3.通过Class类中方法:使用最多的方式
        Class clazz3 = Class.forName("jm.nj.demo15mian.demo02.Person");
        System.out.println(clazz3);
    }
}
